De l’assurance qualité à l’assignation taxonomique
2025-10-21
Note
Le signal renvoyé par le laser est traduit en chromatographe pour chaque amplicon séquencé.
Source: LabXchange.org
Important
Le score est basé sur:
Les sortie du séquenceur Illumina
Exemple de nomenclature de fichier de sortie du séquenceur Illumina: sample1_1_L001_R1_001.fastq.gz
| Signification | Exemple | |
|---|---|---|
| sample1 | Identifiant de l’échantillon | sample1, sample2 |
| _1 | Numéro de réplicat | 1, 2, 3… |
| L001 | Numéro de ligne / lane: | L001-L008 |
| R1/R2 | Direction de lecture | R1=avant, R2=arrière |
| 001 | Segment de fichier | 001, 002… |
Note
Contient plusieurs lignes dont un ensemble de 4 lignes correspond à un amplicon.
system.file(package="ShortRead", "extdata/E-MTAB-1147/ERR127302_1_subset.fastq.gz") |>
gzfile() |>
readLines(n = 12) [1] "@ERR127302.8493430 HWI-EAS350_0441:1:34:16191:2123#0/1"
[2] "GTCTGCTGTATCTGTGTCGGCTGTCTCGCGGGACATGAAGTCAATGAAGGCCTGGAATGTCACTACCCCCAG"
[3] "+"
[4] "HHHHHHHHHHHHHHHHHHHHEBDBB?B:BBGG<DDAA?AABFEFBDBD@DDECEE3>:?;@@@>?=BAB?##"
[5] "@ERR127302.21406531 HWI-EAS350_0441:1:88:9330:2587#0/1"
[6] "CTAGGGCAATCTTTGCAGCAATGAATGCCAATGGGTAGCCAGTGGCTTTTGAGGCCAGAGCAGACCTTCGGG"
[7] "+"
[8] "IIIIHIIIGIIIIIIIHIIIIEGBGHIIIIHGIIHIIIIIIIHIIIHIIIIIGIIIEGIIGBGE@DDGGGIG"
[9] "@ERR127302.22173106 HWI-EAS350_0441:1:91:10434:14757#0/1"
[10] "TGGGCTGTTCCTTCTCACTGTGGCCTGACTAAAACCCAGTGGCATTAAGAAAGAGTCACGTTTCCCAAGTCT"
[11] "+"
[12] "GGHBHGBGGGHHHHDHHHHHHHHHFGHHHHHHHHHHHHHHHHHHHHHGHFHHHHHHHHHHHHHH8AGDGGG>"
system.file(package="ShortRead", "extdata/E-MTAB-1147/ERR127302_1_subset.fastq.gz") |>
gzfile() |>
readLines(n = 4)[1] "@ERR127302.8493430 HWI-EAS350_0441:1:34:16191:2123#0/1"
[2] "GTCTGCTGTATCTGTGTCGGCTGTCTCGCGGGACATGAAGTCAATGAAGGCCTGGAATGTCACTACCCCCAG"
[3] "+"
[4] "HHHHHHHHHHHHHHHHHHHHEBDBB?B:BBGG<DDAA?AABFEFBDBD@DDECEE3>:?;@@@>?=BAB?##"
@)+)Décomposition de l’identifiant
@SH00321:6:BWR98207-2813:1:1101:1065:1015 1:N:0:AACCATAGAA+GGCGAGATGG
Exemple de chaine de caractères donnant le score de qualité (1 caractère par nucléotide): GGGGGGGGGGGGGGGGGGGGGGGG9GG-G9G9G9GGGG
| Caractère ASCII | Score Phred | Taux d’erreur | Précision |
|---|---|---|---|
G |
38 | 0,016% | 99,984% |
9 |
24 | 0,40% | 99,60% |
- |
12 | 6,31% | 93,69% |
Tip
Règle générale : Q30 ou plus = haute qualité (99,9% de précision)
Les scores de qualité utilisent l’encodage ASCII.
Quality encoding: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI
| | | | |
Quality score: 0........10........20........30........40
Avec R, comment convertir l’encodage ASCII en score de Phred et en probabilité d’obtenir une erreur (précision)?
# Convertir la chaîne de qualité en scores Phred
quality_string <- "GGGGGGG99GG-GGG"
quality_scores <- as.integer(charToRaw(quality_string)) - 33
# Afficher la correspondance
data.frame(
Caractere = strsplit(quality_string, "")[[1]],
Score_Phred = quality_scores,
Precision = paste0(round((10^(-quality_scores/10)) * 100, 2), "%")
) Caractere Score_Phred Precision
1 G 38 0.02%
2 G 38 0.02%
3 G 38 0.02%
4 G 38 0.02%
5 G 38 0.02%
6 G 38 0.02%
7 G 38 0.02%
8 9 24 0.4%
9 9 24 0.4%
10 G 38 0.02%
11 G 38 0.02%
12 - 12 6.31%
13 G 38 0.02%
14 G 38 0.02%
15 G 38 0.02%
[1] 20000
# Extraire les amplicons
sequences <- ShortRead::sread(fq)
# Extraire les identifiants
ids <- ShortRead::id(fq)
# Extraire les scores de qualité
qualities <- Biostrings::quality(fq)
# Premier identifiant et séquence
ids[1]BStringSet object of length 1:
width seq
[1] 53 ERR127302.8493430 HWI-EAS350_0441:1:34:16191:2123#0/1
DNAStringSet object of length 1:
width seq
[1] 72 GTCTGCTGTATCTGTGTCGGCTGTCTCGCGGGAC...GTCAATGAAGGCCTGGAATGTCACTACCCCCAG
Min. 1st Qu. Median Mean 3rd Qu. Max.
72 72 72 72 72 72
# Distribution des scores de qualité
qual_matrix <- as(qualities, "matrix")
mean_quality <- rowMeans(qual_matrix)
summary(mean_quality) Min. 1st Qu. Median Mean 3rd Qu. Max.
2.00 33.53 37.35 34.84 38.85 39.99
A C G T
[1,] 0.1944444 0.2638889 0.2916667 0.2500000
[2,] 0.2361111 0.2222222 0.3194444 0.2222222
[3,] 0.2361111 0.2638889 0.2222222 0.2777778
[4,] 0.2500000 0.2638889 0.1666667 0.3194444
RqcNote
Exercice simple: Utilisez le code R que nous venons de voir pour analyser vos propres fichiers FASTQ
data/RqcTip
Si vous n’avez pas de données, vous pouvez télécharger l’exemple ici. Ce sont 10 échantillons de métabarcoding mitofish-12S
10:00
Hakimzadeh et al, 2024
cut, sort, uniq etc. qui manipulent des chaînes de caractères ou des nombresVue d’ensemble du pipeline de métabarcoding
SampleID_*_R1_001.fastq.gzPour chaque lecture fusionnée:
Télécharger BARQUE en cliquant sur le lien
Ou en rendant à l’adresse suivante: https://github.com/enormandeau/barque
fastq.gz avec la bonne nomenclature dans le dossier 04_data02_info/primers.csv02_info/barque_config.shTip
Si vous voulez réutiliser la configuration du pipeline pour d’autres fois, c’est une bonne pratique de dupliquer le fichier et de le sauvegarder sous un autre nom.
04_dataOn peut faire tout de suite l’étape 1 avec vos données.
Tip
Si vous avez pas de données, vous pouvez télécharger celles fournies par Étienne Normandeau, en cliquant ici. Ce sont 10 échantillons de métabarcoding mitofish-12S, chacun.
On configure les amorces (P3 et P5) utilisées avec le fichier 02_info/primers.csv
TODO: Montre le fichier
On ajuste les paramètres du pipeline avec le fichier 02_info/barque_config.sh
TODO: Montre le fichier
TODO: Passer en revue les bases de données déjà dans BARQUE
TODO: Aller chercher la base de données NCBI pour les primers COI
BARQUE requière plusieurs programmes qui ne sont pas tous compatibles avec l’environnement Windows
Hakimzadeh et al, 2024
Le rappport est disponible et executable depuis la librairie barqueReport sur Github
–
Accès à la documentation
Comment le séquencage est effectué?